const { jwtSecret } = require('../config/config.default')
const { verify } = require('../util/jwt')
const {User} = require('../model')
// 验证用户token
module.exports = async (req, res, next) => {
    // 1.从请求头获取token数据
    let token = req.headers['authorization']
    token = token?token.split('Bearer ')[1]:null
    // 2.验证token是否有效
    // 2.1 无效-》响应401 
    // 2.2有效-》 把用户信息读取出来放到req 请求对象上继续执行
    if(!token) {
        return res.status(401).end()
    }
    try {
        const decodedToken = await verify(token, jwtSecret)
        req.user = await User.findById(decodedToken.userId)
        next()
    } catch (err) {
        return res.status(401).end()
    }
}